"""
方法的重写
    当父类的方法实现不能满足子类的需求时，子类可以重写父类的方法

    重写父类的方法有两种情况：
        - 覆盖父类的方法
        - 对父类的方法进行扩展

对父类的方法进行扩展：
    如果在实际开发中，子类的方法包含父类的方法的实现
        父类原本封装的方法实现是子类的一部分
    就可以使用扩展的方式重写父类的方法
        1) 在子类中重写父类的方法
        2) 在需要的位置使用 super().父类方法 来调用父类方法的执行
        3) 代码其他的位置针对子类的需求，编写子类的特有的代码的实现
    
    关于 super 
        1) 在 Python 中是一个特殊类
        2) super() 就是使用 super 类创建出来的对象
        3) 最常使用的场景就是在 重写父类的方法时，调用在父类中封装的方法实现

    了解调用父类方法的另外一种方式：
        在 Python 2.x 中，没有 super 关键字，如果调用父类封装的方法需要使用：
            父类名.方法(self)
        目前，在 Python 3 中，还支持这种方式，但是不推荐使用，因为一旦父类的方法发生变化，方法调用位置的类名也需要变化

        注意：这两种调用方式只能使用一种
             如果不小心使用子类名.方法(self) 调用，有可能形成递归调用，出现死循环
"""


class Animal:
    """父类中动物吃饭的方法
    """
    def eat(self):
        print("吃饭~~~")


class Dog(Animal):

    """重写父类的方法
    """
    def eat(self):
        super().eat()  # 使用 super() 调用父类封装好的方法
        print("哇哇的吃饭~~~")


dog = Dog()
dog.eat()

